/**
 * 
 * 用户的操作层
 */

const {useModel} = require('../model/index')
const {createJWT} = require('../util/jwt')

// 关于用户登录的控制器post
const regist =async (ctx)=>{
    const userregist = new useModel(ctx.request.body)
    try{
        await userregist.save()
        ctx.response.body = {
            code:1,
            msg:'注册成功'
        }
    }catch(err){
        ctx.status = 400
        ctx.body = {
            code:0,
            msg:err.errors
        }
    }
}

/**
 * 异步登录函数
 * 
 * 该函数旨在处理用户的登录逻辑。通过接收一个上下文对象作为参数，它可以访问和操作与用户登录相关的各种数据和功能。
 * 具体实现包括验证用户凭据、生成会话令牌等，但在此示例中未具体实现。
 * 
 * @param {Object} ctx - 上下文对象，包含请求、响应、会话等信息
 * @returns {Promise<void>} - 该函数返回一个Promise，但未明确指定解析或拒绝的值
 */
const login = async (ctx) => {
    try{
        const dbback = await useModel.findOne(ctx.request.body)
        const token = await createJWT({_id:dbback._id})
        ctx.body = {
            code:1,
            data:{
                ...dbback._doc,
                token
            },
            msg:'登录成功'
        }

    }catch(err){
        console.log(err)
    }
    
   
}

const list = async (ctx)=>{
    const {page=1,pageSize=5} = ctx.query
    let skip = (page-1)*pageSize
    try{
        const dbback =await useModel.find().skip(skip).limit(pageSize)
        ctx.body = {
            code:1,
            data:dbback,
            msg:'查询成功'
        }
    }catch(err){
        console.log(err)
        ctx.status = 400
        ctx.body = {
            code:0,
            msg:'查询失败'
        }
    }
}

module.exports = {
    regist,
    login,
    list
}